home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 21 / CU Amiga Magazine's Super CD-ROM 21 (1998)(EMAP Images)(GB)[!][issue 1998-04].iso / CUCD / Utilities / KeyReq / Demo / Source / AsyncRequester.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1997-12-05  |  1.7 KB  |  84 lines

  1. program AsyncRequester;
  2.  
  3. uses Exec,AmigaDOS,Intuition;
  4.  
  5. const
  6.     ReqTitle    : string[30] = 'Asynchron requester test'#0;
  7.     ReqBody        : string[30] = 'What are you waiting for?'#0;
  8.     ReqGadgets    : string[40] = 'PPC Amiga|B. Gates going bankrupt'#0;
  9.  
  10. var
  11.     req        : pWindow;
  12.     es        : tEasyStruct;
  13.     
  14. procedure Cleanup(mes: string);
  15. var
  16.     rc    : long;
  17. begin
  18.     rc:=RETURN_OK;
  19.     if mes<>'' then
  20.     begin
  21.         Writeln('AsyncRequester :',mes);
  22.         rc:=RETURN_WARN;
  23.     end;
  24.     
  25.     if req<>NIL then FreeSysRequest(req);
  26.     if IntuitionBase<>NIL then CloseLibrary(pLibrary(IntuitionBase));
  27.  
  28.     halt(rc);
  29. end;
  30.  
  31. procedure OpenLibs;
  32. begin
  33.     IntuitionBase:=pIntuitionBase(OpenLibrary('intuition.library',36));
  34.     if IntuitionBase=NIL then Cleanup('Can''t open intuition.library V36!');
  35. end;
  36.  
  37. procedure StartRequester;
  38. begin
  39.     es.es_StructSize:=sizeof(tEasyStruct);
  40.     es.es_Flags:=0;
  41.     es.es_Title:=@ReqTitle[1];
  42.     es.es_TextFormat:=@ReqBody[1];
  43.     es.es_GadgetFormat:=@ReqGadgets[1];
  44.     
  45.     req:=BuildEasyRequestArgs(IntuitionBase^.ActiveWindow,@es,0,NIL);
  46.     if req=NIL then Cleanup('Can''t open requester!?');
  47. end;
  48.  
  49. procedure HandleAll;
  50. var
  51.     ok    : boolean;
  52.     l    : long;
  53.     c    : long;
  54. begin
  55.     c:=0;
  56.     ok:=FALSE;
  57.     repeat
  58.         Delay_(10);
  59.         l:=SysReqHandler(req,NIL,FALSE);
  60.  
  61.         if l=1 then
  62.         begin
  63.             writeln('Requester replied: You clicked on "PPC Amiga"');
  64.             ok:=TRUE;
  65.         end else if l=0 then begin
  66.             writeln('Requester replied: You clicked on "B. Gates going bankrupt"');
  67.             ok:=TRUE;
  68.         end else if CheckSignal(SIGBREAKF_CTRL_C)=SIGBREAKF_CTRL_C then
  69.         begin
  70.             writeln('** BREAK: Requester has not been replied!');
  71.             ok:=TRUE;
  72.         end else begin
  73.             Writeln('NOOP Counter :',c);
  74.             Inc(c);
  75.         end;
  76.     until ok;
  77. end;
  78.  
  79. begin
  80.     OpenLibs;
  81.     StartRequester;
  82.     HandleAll;
  83.     Cleanup('');
  84. end.